﻿Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be
Imports System.Data.SqlClient
Imports System.Data

Partial Class Reportes_Separaciones
    Inherits System.Web.UI.Page

    Private separaciones As List(Of EseparacionVenta) = Nothing
    Private separacionesDetalle As List(Of EseparacionVentaDetallePagos)

#Region "       Formulario                          "
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        '***********************************************************'
        If Not IsPostBack Then
            cargarGestion()
            cargarProyecto()
        End If
    End Sub
    Private Sub cargarGestion()
        Dim Eestado As New Ecommons
        selEstado.DataSource = Eestado.tpoGestion
        selEstado.DataTextField = "descripcion"
        selEstado.DataValueField = "codigo"
        selEstado.DataBind()
        upEstado.Update()
    End Sub
    
    Private Sub cargarProyecto()
        selProyecto.DataSource = Rproyecto.SeleccionarTodo(Me.Master.descEmpresa, True)
        selProyecto.DataTextField = "descProyecto"
        selProyecto.DataValueField = "idProyecto"
        selProyecto.DataBind()
        upProyecto.Update()
    End Sub
    Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        If txtFchInicio.Text.Length > 0 AndAlso txtFchFin.Text.Length > 0 Then
            Dim venta As New EseparacionVenta
            With venta
                .idProyecto = Me.selProyecto.Value
                .fchInicio = txtFchInicio.Text
                .fchFin = txtFchFin.Text
                .tpoGestion = selEstado.Value
            End With
            'separaciones = RseparacionVenta.ReporteConsolidado(Me.Master.descEmpresa, venta)
            separaciones = RseparacionVenta.ReporteConsolidado5(Me.Master.descEmpresa, venta)

            Session("separacionesLista") = separaciones
            'separacionesDetalles = RseparacionVentaDetalle.ReporteSeparacionDetalle(Me.Master.descEmpresa, False, venta)
            'Session("separacionesListaDetalle") = separacionesDetalles
            If Not separaciones Is Nothing Then
                egvSeparacionVenta.DataSource = separaciones
                egvSeparacionVenta.DataBind()
                upnSeparacionVenta.Update()
                lblCantidadTotalSeparación.Text = String.Format(": {0}", separaciones.Count.ToString)
                'lblCantidadTotalSeparación.Text = String.Format(": {0}", (From sep As EseparacionVenta In separaciones _
                '                                                                   Where sep.descGestion = "Venta" _
                '                                                                  Select sep)
                lblTotalPrecioVenta.Text = String.Format(": {0:###,###,##00.00}", (From sep As EseparacionVenta In separaciones _
                                                                                   Where sep.descGestion = "Venta" _
                                                                                   Select sep.totalPrecioVenta).Sum())

                lblTotalSeparación.Text = String.Format(": {0:###,###,##0.000}", (From sep As EseparacionVenta In separaciones _
                                                                                  Where sep.descGestion = "Separación" _
                                                                                  Select sep.totalPrecioVenta).Sum())
            End If
        End If
    End Sub
    Protected Sub btnLimpiar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLimpiar.Click
        txtFchInicio.Text = ""
        upFchInicio.Update()
        txtFchFin.Text = ""
        upFchFin.Update()
        egvSeparacionVenta.DataSource = Nothing
        upnSeparacionVenta.Update()
    End Sub
    Protected Sub btnExportar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportar.Click
        Dim separacionVenta As New EseparacionVenta
        Dim comillas As String = Char.ConvertFromUtf32(34)
        With separacionVenta
            .idProyecto = Me.selProyecto.Value
            .fchInicio = txtFchInicio.Text
            .fchFin = txtFchFin.Text
            .tpoGestion = selEstado.Value
        End With
        separaciones = RseparacionVenta.ReporteConsolidado(Me.Master.descEmpresa, separacionVenta)
        Session("separacionLista") = separaciones

        separacionesDetalle = RseparacionVentaDetallePagos.SeleccionarXPendientePagosDetalleConsolidado(Me.Master.descEmpresa, separacionVenta)
        Session("separacionVentaDetalle") = separacionesDetalle


        Dim fileName As String = "ConsultaConsolidado{0}.xls"
        fileName = String.Format(fileName, DateTime.Now.ToShortDateString())
        Dim Response As HttpResponse = HttpContext.Current.Response
        Response.ContentType = "application/vnd.ms-excel"
        Response.Charset = "UTF-8"
        Response.ContentEncoding = System.Text.Encoding.Default
        Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName)

        Response.Write("Proyecto") : Response.Write(vbTab)
        Response.Write("Etapa") : Response.Write(vbTab)
        Response.Write("Torre") : Response.Write(vbTab)
        Response.Write("Tipo") : Response.Write(vbTab)
        Response.Write("Modelo") : Response.Write(vbTab)
        Response.Write("N° Inmueble") : Response.Write(vbTab)
        Response.Write("Area Techada") : Response.Write(vbTab)
        Response.Write("Terraza / Jardín") : Response.Write(vbTab)
        Response.Write("Area Ocupada") : Response.Write(vbTab)
        Response.Write("Estac /Modelo") : Response.Write(vbTab)
        Response.Write("N") : Response.Write(vbTab)
        Response.Write("Deposito") : Response.Write(vbTab)
        Response.Write("N") : Response.Write(vbTab)
        Response.Write("Nombre Cliente") : Response.Write(vbTab)
        Response.Write("DNI") : Response.Write(vbTab)
        Response.Write("Rango Edad") : Response.Write(vbTab)
        Response.Write("Como se enteró") : Response.Write(vbTab)
        Response.Write("Nivel interés") : Response.Write(vbTab)
        Response.Write("Distrito de procedencia") : Response.Write(vbTab)
        Response.Write("Tipo de uso") : Response.Write(vbTab)
        Response.Write("Moneda") : Response.Write(vbTab)
        Response.Write("Valor Inmueble") : Response.Write(vbTab)
        Response.Write("Descuento Dep.") : Response.Write(vbTab)
        Response.Write("Precio Neto") : Response.Write(vbTab)
        Response.Write("Estacionamiento") : Response.Write(vbTab)
        Response.Write("Deposito") : Response.Write(vbTab)
        Response.Write("Precio TOTAL Venta") : Response.Write(vbTab)
        Response.Write("Fecha Separacion") : Response.Write(vbTab)
        Response.Write("Monto Separación") : Response.Write(vbTab)
        Response.Write("N° Op. Separación") : Response.Write(vbTab)
        Response.Write("Forma Pago Separacion") : Response.Write(vbTab)
        Response.Write("Fecha Venta") : Response.Write(vbTab)
        Response.Write("Monto Cuota Inicial") : Response.Write(vbTab)
        Dim cantCtaInicial = (From ctaIni In separacionesDetalle _
                              Where ctaIni.idMotivo = 1 _
                              Select ctaIni.correlativo).Max
        Dim ctaItemIni As Int16 = 0

        Dim cantCtaFinaciar = (From ctaIni In separacionesDetalle _
                               Where ctaIni.idMotivo = 2 _
                               Select ctaIni.correlativo).Max
        Dim ctaItemSal As Int16 = 0

        For x As Int64 = 1 To cantCtaInicial
            Response.Write("CI " & x & " Fecha") : Response.Write(vbTab)
            Response.Write("CI " & x & " Monto") : Response.Write(vbTab)
            Response.Write("CI " & x & " N° Op.") : Response.Write(vbTab)
            Response.Write("CI " & x & " Estado") : Response.Write(vbTab)
        Next
        'Response.Write("Forma Pago CI") : Response.Write(vbTab)
        Response.Write("Saldo a financiar") : Response.Write(vbTab)
        For x As Int64 = 1 To cantCtaFinaciar
            Response.Write("SF " & x & " Fecha") : Response.Write(vbTab)
            Response.Write("SF " & x & " Monto") : Response.Write(vbTab)
            Response.Write("SF " & x & " N° Op.") : Response.Write(vbTab)
            Response.Write("SF " & x & " Estado") : Response.Write(vbTab)
        Next
        Response.Write("Forma de Pago SF") : Response.Write(vbTab)
        Response.Write("Entidad Financiera") : Response.Write(vbTab)
        Response.Write("Estado") : Response.Write(vbTab)
        Response.Write("Nombre Vendedor") : Response.Write(vbTab)
        Response.Write(vbCrLf)
                                Dim value As String
        Dim key1 As String = Nothing
        Dim key2 As String = Nothing
        Dim montoDepartamento As Decimal = 0
        Dim countEstacModelo As Int16 = 0
        Dim countDeposModelo As Int16 = 0
        For Each trx In separaciones

            Dim montoEstacionamiento As Decimal = 0
            Dim montoDeposito As Decimal = 0

            key1 = trx.idProyecto & trx.idEtapa & trx.idSeparacionVenta
            If Not key1.Equals(key2) Then
                key2 = key1
                value = trx.descProyecto : Response.Write(value) : Response.Write(vbTab)
                value = trx.descEtapa : Response.Write(value) : Response.Write(vbTab)
                value = trx.nomEdiMzn : Response.Write(value) : Response.Write(vbTab)
                value = trx.EunidInmobiliarias.descTpoInmueble : Response.Write(value) : Response.Write(vbTab)
                value = trx.EunidInmobiliarias.nomModelo : Response.Write(value) : Response.Write(vbTab)
                value = trx.EunidInmobiliarias.nroInmueble : Response.Write(value) : Response.Write(vbTab)
                value = trx.EunidInmobiliarias.areaTechada.ToString : Response.Write(value) : Response.Write(vbTab)
                value = trx.EunidInmobiliarias.areaVendible.ToString : Response.Write(value) : Response.Write(vbTab)
                value = trx.EunidInmobiliarias.areaTerrModelo.ToString : Response.Write(value) : Response.Write(vbTab)
                countEstacModelo = (From s In separaciones _
                                    Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 3 _
                                    Select s.EunidInmobiliarias.nomEdiMzn & " / " & s.EunidInmobiliarias.nomModelo).Count()
                If countEstacModelo > 0 Then
                    value = (From s In separaciones _
                             Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 3 _
                             Select s.EunidInmobiliarias.nomEdiMzn & " / " & s.EunidInmobiliarias.nomModelo).ElementAt(0).ToString
                    montoEstacionamiento = (From s In separaciones _
                                            Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 3 _
                                            Select s.valorVenta).Sum()
                Else
                    value = ""
                End If
                Response.Write(value) : Response.Write(vbTab)

                If countEstacModelo > 0 Then
                    value = (From s In separaciones _
                             Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 3 _
                             Select s.EunidInmobiliarias.nroInmueble).ElementAt(0).ToString
                Else
                    value = ""
                End If
                Response.Write(value) : Response.Write(vbTab)

                countDeposModelo = (From s In separaciones _
                                    Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 5 _
                                    Select s.EunidInmobiliarias.nomEdiMzn & " / " & s.EunidInmobiliarias.nomModelo).Count()
                If countDeposModelo > 0 Then
                    value = (From s In separaciones _
                             Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 5 _
                             Select s.EunidInmobiliarias.nomEdiMzn & " / " & s.EunidInmobiliarias.nomModelo).ElementAt(0).ToString
                    montoDeposito = (From s In separaciones _
                                     Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 5 _
                                     Select s.valorVenta).Sum
                Else
                    value = ""
                End If
                Response.Write(value) : Response.Write(vbTab)
                If countDeposModelo > 0 Then
                    value = (From s In separaciones _
                             Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 5 _
                             Select s.EunidInmobiliarias.nroInmueble).ElementAt(0).ToString
                Else
                    value = ""
                End If
                Response.Write(value) : Response.Write(vbTab)

                value = trx.Ecliente.nombre : Response.Write(value) : Response.Write(vbTab)
                value = "'" + trx.nroDocumento : Response.Write(value) : Response.Write(vbTab)
                'value = String.Format("{0:###,###,###}", trx.nroDocumento) : Response.Write(value) : Response.Write(vbString)
                value = trx.RangoEdad : Response.Write(value) : Response.Write(vbTab)
                value = trx.descComoseEntero : Response.Write(value) : Response.Write(vbTab)
                value = trx.descNivelInteres : Response.Write(value) : Response.Write(vbTab)
                value = trx.direccion : Response.Write(value) : Response.Write(vbTab)
                value = trx.descTpoUsoInmueble : Response.Write(value) : Response.Write(vbTab)
                value = trx.EunidInmobiliarias.descMoneda : Response.Write(value) : Response.Write(vbTab)
                'value = trx.EunidInmobiliarias.precioBase : Response.Write(value) : Response.Write(vbTab)                
                montoDepartamento = (From s In separaciones _
                                     Where s.idSeparacionVenta = trx.idSeparacionVenta And s.idTpoInmueble = 2 _
                                     Select s.totalPrecioVenta).Sum

                value = montoDepartamento.ToString : Response.Write(value) : Response.Write(vbTab)


                value = trx.descuento : Response.Write(value) : Response.Write(vbTab)
                'value = trx.totalPrecioVenta : Response.Write(value) : Response.Write(vbTab)
                value = (montoDepartamento - trx.descuento).ToString : Response.Write(value) : Response.Write(vbTab)

                value = montoEstacionamiento.ToString : Response.Write(value) : Response.Write(vbTab)

                If countDeposModelo > 0 Then
                    value = montoDeposito.ToString
                Else
                    value = ""
                End If
                Response.Write(value) : Response.Write(vbTab)

                value = (CDbl(montoDepartamento) - trx.descuento + CDbl(montoEstacionamiento) + CDbl(montoDeposito)).ToString : Response.Write(value) : Response.Write(vbTab)

                value = trx.fchOperacion : Response.Write(value) : Response.Write(vbTab)
                value = trx.totalSeparacion : Response.Write(value) : Response.Write(vbTab)
                value = "'" + trx.numOperacion.Trim : Response.Write(value) : Response.Write(vbTab)
                value = trx.descFormaPago : Response.Write(value) : Response.Write(vbTab)
                value = trx.fchVenta : Response.Write(value) : Response.Write(vbTab)
                value = trx.ctaInicial : Response.Write(value) : Response.Write(vbTab)

                For Each sd As EseparacionVentaDetallePagos In separacionesDetalle

                    If sd.idProyecto = trx.idProyecto AndAlso sd.idEtapa = trx.idEtapa AndAlso _
                       sd.idSeparacionVenta = trx.idSeparacionVenta AndAlso sd.idMotivo = 1 Then
                        ctaItemIni += 1
                        value = sd.fchPago : Response.Write(value) : Response.Write(vbTab)
                        value = sd.cuota : Response.Write(value) : Response.Write(vbTab)
                        value = sd.vouchet : Response.Write(value) : Response.Write(vbTab)
                        value = sd.descEstadoPago : Response.Write(value) : Response.Write(vbTab)
                    End If

                Next
                For x As Int16 = ctaItemIni To cantCtaInicial - 1
                    value = " " : Response.Write(value) : Response.Write(vbTab)
                    value = " " : Response.Write(value) : Response.Write(vbTab)
                    value = " " : Response.Write(value) : Response.Write(vbTab)
                    value = " " : Response.Write(value) : Response.Write(vbTab)
                Next
                    'value = trx.descFormaPagoCtaInicial : Response.Write(value) : Response.Write(vbTab)
                    ctaItemIni = 0

                    value = trx.saldoFinanciar : Response.Write(value) : Response.Write(vbTab)
                    For Each sd As EseparacionVentaDetallePagos In separacionesDetalle
                        If sd.idProyecto = trx.idProyecto AndAlso sd.idEtapa = trx.idEtapa AndAlso _
                           sd.idSeparacionVenta = trx.idSeparacionVenta AndAlso sd.idMotivo = 2 Then
                            ctaItemSal += 1
                            value = sd.fchPago : Response.Write(value) : Response.Write(vbTab)
                            value = sd.cuota : Response.Write(value) : Response.Write(vbTab)
                            value = sd.vouchet : Response.Write(value) : Response.Write(vbTab)
                            value = sd.descEstadoPago : Response.Write(value) : Response.Write(vbTab)
                        End If
                    Next
                    For x As Int16 = ctaItemSal To cantCtaFinaciar - 1
                        value = " " : Response.Write(value) : Response.Write(vbTab)
                        value = " " : Response.Write(value) : Response.Write(vbTab)
                        value = " " : Response.Write(value) : Response.Write(vbTab)
                        value = " " : Response.Write(value) : Response.Write(vbTab)
                    Next
                    value = trx.descFormaPagoSaldoFin : Response.Write(value) : Response.Write(vbTab)
                    ctaItemSal = 0

                    value = trx.descEntidadFin : Response.Write(value) : Response.Write(vbTab)
                    value = trx.descGestion.Trim : Response.Write(value) : Response.Write(vbTab)
                    value = trx.nombreCompletoVendedor : Response.Write(value) : Response.Write(vbTab)
                    Response.Write(vbCrLf)
            End If
        Next
        Response.End()
    End Sub
#End Region

#Region "       Venta Detalle                       "
    Protected Sub egvSeparacionVenta_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles egvSeparacionVenta.PageIndexChanging
        separaciones = Session("separacionesLista")
        If Not separaciones Is Nothing Then
            egvSeparacionVenta.DataSource = separaciones
            egvSeparacionVenta.PageIndex = e.NewPageIndex
            egvSeparacionVenta.DataBind()
            upnSeparacionVenta.Update()
        End If
    End Sub
    'Protected Sub egvSeparacionVenta_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    '    Handles egvSeparacionVenta.RowCreated
    '    If e.Row.RowType = DataControlRowType.DataRow Then
    '        e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
    '        e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")

    '        Dim strUidSeparacion As String = DataBinder.Eval(e.Row.DataItem, "idSeparacionVenta").ToString()
    '        Dim egvDetalleSeparacion As GridView = CType(e.Row.FindControl("egvDetalleSeparacion"), GridView)
    '        AddHandler egvDetalleSeparacion.RowCreated, AddressOf egvDetalleSeparacion_RowCreated
    '        If strUidSeparacion.Length > 0 Then
    '            separacionesDetalles = Session("separacionesListaDetalle")
    '            Dim LVentaDetalles = From vd In separacionesDetalles _
    '                                    Where vd.idProyecto.ToString = Me.Master.idProyecto AndAlso _
    '                                          vd.idEtapa = Me.Master.idEtapa AndAlso _
    '                                          vd.idSeparacionVenta = CType(strUidSeparacion, Int32) _
    '                                    Select vd

    '            If separacionesDetalles.Count > 0 Then
    '                egvDetalleSeparacion.DataSource = LVentaDetalles
    '                Dim objFila As ExGridView.ExtGridViewRow = CType(e.Row, ExGridView.ExtGridViewRow)
    '                objFila.ShowExpand = True
    '            End If
    '        End If
    '    End If
    'End Sub
    'Protected Sub egvDetalleSeparacion_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
    '    If e.Row.RowType = DataControlRowType.DataRow Then
    '        e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
    '        e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
    '    End If
    'End Sub
#End Region

End Class